package us.kg.kotoriforest.spring.factory;

import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;
import us.kg.kotoriforest.spring.pojo.Car;

/**
 * @author Kotori rotroutine@163.com
 * @since 2025/1/24
 */
@Component // 工厂Bean也是一个组件 必须放进IOC容器中
// 当某些组件构建比较麻烦的时候 可以使用工厂Bean进行构建 将构建逻辑封装在工厂Bean中
// IOC容器中组件的ID为工厂Bean的名字 值是工厂Bean产生的对象
public class CarFactory implements FactoryBean<Car> {
    // 从工厂中获取对象并放入IOC容器中 由Spring框架帮我们自动调用该方法
    @Override
    public Car getObject() {
        return new Car();
    }

    // 获取对象的类型
    @Override
    public Class<?> getObjectType() {
        return Car.class;
    }

    // 工厂产生的对象是否是单例的 默认为true 即单例模式
    @Override
    public boolean isSingleton() {
        return FactoryBean.super.isSingleton();
    }
}
